package com.tqyan.dal.mapper;

import com.tqyan.model.dto.PaperDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @description 论文
 * <p> <功能详细描述> </p>
 *
 * @author 陈晨
 * @date 2023/4/10 18:20
 */
@Mapper
public interface PaperMapper {

    /**
     * @description 添加
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/10 18:19
     */
    int save(@Param("item") PaperDTO item);

    /**
     * @description 更新会话内容
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/12 19:39
     */
    int update(@Param("item") PaperDTO item);

    /**
     * @description ID查询
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/13 17:25
     */
    PaperDTO queryById(@Param("id") long id);

    /**
     * @description 用户查询
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/13 17:25
     */
    List<PaperDTO> queryByUser(@Param("userId") long userId);

    /**
     * @description 查询用户已完成的论文
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/5/16 23:52
     */
    List<PaperDTO> queryCompleteByUser(@Param("userId") long userId);

    /**
     * @description 查询未完成的论文
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/13 17:25
     */
    PaperDTO queryIncomplete(@Param("userId") long userId);

    /**
     * @description 查询正在撰写的论文
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/13 17:25
     */
    List<PaperDTO> queryWritingByPage(@Param("pageSize") int pageSize, @Param("notIn") List<Long> notIn);

    /**
     * @description 用户标题查询
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/4/13 17:25
     */
    PaperDTO queryByTitle(@Param("userId") long userId, @Param("title") String title);

    /**
     * @description 查询用户已支付论文数
     * <p> <功能详细描述> </p>
     *
     * @author 陈晨
     * @date 2023/5/16 15:03
     */
    int queryByPayCount(@Param("userId") long userId);

}


